package {package}.{obj.lower}.service;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.neusoft.hifly.commons.exception.SystemErrorException;

import cn.com.ctcloud.saas.core.basic.service.ICTSaaSBaseService;
import cn.com.ctcloud.saas.tenant.organ.domain.OrganObj;

/**
 * Title: {project.name}-{project.app}
 * <p>
 * Description: {obj.name} Service
 * <p>
 * Copyright: {project.copyright}
 * <p>
 * Company: {project.company}
 * 
 * @author {project.author}
 * @version {project.version}
 */
public interface I{obj}Service {
	/**
	 * 保存对象
	 * 
	 * @param obj
	 *            对象
	 * @throws SystemErrorException
	 *             自定义异常
	 */
	void saveOrUpdate({obj}Obj obj) throws SystemErrorException;
	
	/**
	 * 根据ID删除对象
	 * 
	 * @param logicId
	 *            对象ID
	 */
	void deleteByLogicId(long logicId);

	/**
	 * 批量删除对象
	 * 
	 * @param logicIds
	 *            对象ID，多id使用英文逗号分隔
	 */
	void deleteByBatch(String logicIds);
	
	/**
	 * 根据id查询对象
	 * 
	 * @param logicId
	 *            对象logicId
	 * @return 对象
	 */
	{obj}Obj getByLogicId(long logicId);

	/**
	 * 根据名称查询对象
	 *
	 * @param name
	 *            名称
	 * @return 对象
	 */
	{obj}Obj getByName(String name);

	/**
	 * 查询所有对象
	 * 
	 * @return 对象集合
	 */
	List<{obj}Obj> findAll();

	/**
	 * 根据条件查询
	 * 
	 * @param property
	 *            参数。其中isLike:Boolean 是否模糊查询
	 * @return 对象集合
	 */
	List<{obj}Obj> search(Map<String, Object> property);

	/**
	 * 根据条件查询
	 * 
	 * @param offset
	 *            当前页数
	 * @param limit
	 *            分页长度
	 * @param property
	 *            参数。其中isLike:Boolean 是否模糊查询
	 * @return 返回Map
	 */
	IPage<{obj}Obj> search(int offset, int limit, Map<String, Object> property);
}
